package com.example.demo.util;

import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;

/**
 * @Description
 * @ClassName TTT1
 * @Author: jinqi.zhu
 * @Create: 2021/8/20 10:25
 */
public class TTT1 {
    public static void main(String[] args) {
        // 加载导出模板
        ExcelTemplate excel = new ExcelTemplate("C:\\Users\\hly\\Desktop\\form_1.xlsx");
        if (!excel.examine())
            return;
        // 使用一个Map来存储所有的行区域，
        // 每个行区域对应Map的一个键
        LinkedHashMap<Integer, LinkedList<String>> rows = new LinkedHashMap<>();
        // 创建第一个行区域里面填充的值，ExcelTemplate会按从左至右，
        // 从上往下的顺序，挨个填充区域里面的${}，所以创建的时候注意顺序就好
        LinkedList<String> row1 = new LinkedList<>();
        row1.add("1");

        // 把第一个行区域row1添加进入rows
        rows.put(1, row1);
        // 创建第二个行区域里面填充的值
        LinkedList<String> row2 = new LinkedList<>();
        row2.add("2");
        row2.add("1234");
        row2.add("李四");
        row2.add("2019/9/11");
        row2.add("2019/9/11");
        row2.add("2019/9/11");
        row2.add("6");
        row2.add("临时突发状况");
        // 把第二个行区域row2添加进入rows
        rows.put(2, row2);

        // 创建需要填充替换的值
        Map<String, String> fill = new HashMap<>();
        fill.put("摘要一", "11\n22");
        // 第一个参数，需要操作的sheet的索引
        // 第二个参数，需要复制的区域的第一行索引
        // 第三个参数，需要复制的区域的最后一行索引
        // 第四个参数，需要插入的位置的索引
        // 第五个参数，填充行区域中${}的值
        // 第六个参数，是否需要删除原来的区域
        // 需要注意的是，行的索引一般要减一
        try {
            //excel.addRowByExist(0, 16, 16, 17, rows, true);
            // 第一个参数，需要操作的sheet的索引
            // 第二个参数，替换sheet当中${<变量的值>}的值
            excel.fillVariable(0, fill);
            excel.save("D:\\poi" + System.currentTimeMillis() + ".xlsx");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
